'''
Created on 17/11/2011

@author: Daniel
'''
from IO import *
from Programa import *

class Biblioteca:
    def __init__(self):
        pass
    
    def realizar_emprestimo_aluno(self, aluno, lista_livros, numero_livros, data_entrega):
        try:
            self.aluno = aluno
            max_emprestimo = self.aluno.get_numero_max_emprestimo()
            novo_max_emprestimo = max_emprestimo - numero_livros
            for livro in lista_livros:
                #funcao provisoria, pois e preciso saber exatamente em qual tabela o livro escolhido pertence
                if livro[9] == 1:
                    banco.alterar_no_banco('livro_didatico', 'emprestado = %d'%(1), 'codigo = %s' %(livro[8]))
                    banco.salvar_emprestimo(self.aluno.get_matricula(), livro[8], data_entrega, 1, livro[9])
                elif livro[9] == 2:
                    banco.alterar_no_banco('livro_paradidatico', 'emprestado = %d'%(1), 'codigo = %s' %(livro[8]))
                    banco.salvar_emprestimo(self.aluno.get_matricula(), livro[8], data_entrega, 1, livro[9])
                elif livro[9] == 3:
                    banco.alterar_no_banco('artigo', 'emprestado = %d'%(1), 'codigo = %s' %(livro[8]))
                    banco.salvar_emprestimo(self.aluno.get_matricula(), livro[8], data_entrega, 1, livro[9])
                elif livro[9] == 4:
                    banco.alterar_no_banco('revista', 'emprestado = %d'%(1), 'codigo = %s' %(livro[8]))
                    banco.salvar_emprestimo(self.aluno.get_matricula(), livro[8], data_entrega, 1, livro[9])
            
#            if novo_max_emprestimo == 0:
#                banco.alterar_no_banco('aluno', 'autorizado = %d' %(0), 'matricula = %s' %(self.aluno.get_matricula()))            
#                banco.alterar_no_banco('aluno', 'max_emprestimo = %d' %(novo_max_emprestimo), 'matricula = %s' %(self.aluno.get_matricula()))
#            else:
            banco.alterar_no_banco('aluno', 'max_emprestimo = %d' %(novo_max_emprestimo), 'matricula = %s' %(self.aluno.get_matricula()))
            
            tkMessageBox.showinfo('Mensagem do Sistema', 'Emprestimo efetuado com sucesso.')
            
            
        except:
            tkMessageBox.showerror('Error', 'Algum erro ocorreu na classe biblioteca, por favor verifique o codigo')
    
    def consultar_emprestimo(self, identificador):
        
        self.resultado = banco.consultar_no_banco("emprestimo", "id_cliente REGEXP '%s'" % (identificador))
        self.resultado_consulta = []
        self.resultado_final =[]
        
        for objeto in self.resultado:
            if objeto[4] == 1 and objeto[5] == 1:
                self.codigo_publicacao = objeto[2]
                self.resultado_consulta.append(banco.consultar_no_banco('livro_didatico', "codigo = '%s'" % (self.codigo_publicacao)))
            elif objeto[4] == 1 and objeto[5] == 2:
                self.codigo_publicacao = objeto[2]
                self.resultado_consulta.append(banco.consultar_no_banco('livro_paradidatico', "codigo = '%s'" % (self.codigo_publicacao)))
            elif objeto[4] == 1 and objeto[5] == 3:
                self.codigo_publicacao = objeto[2]
                self.resultado_consulta.append(banco.consultar_no_banco('artigo', "codigo = '%s'" % (self.codigo_publicacao)))
            elif objeto[4] == 1 and objeto[5] == 4:
                self.codigo_publicacao = objeto[2]
                self.resultado_consulta.append(banco.consultar_no_banco('revista', "codigo = '%s'" % (self.codigo_publicacao)))
                
        for a in self.resultado_consulta:
            for b in a:
                self.resultado_final.append(b)
            
        return self.resultado_final
    
    def entrega(self, identificador, tipo_livro, tipo_cliente, id_cliente):
        if tipo_livro == 1:
            banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (identificador))
            banco.alterar_no_banco('livro_didatico', 'emprestado = %d' %(0), "codigo = %s" % (identificador))
        elif tipo_livro == 2:
            banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (identificador))
            banco.alterar_no_banco('livro_paradidatico', 'emprestado = %d' %(0), "codigo = %s" % (identificador))
        elif tipo_livro == 3:
            banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (identificador))
            banco.alterar_no_banco('artigo', 'emprestado = %d' %(0), "codigo = %s" % (identificador))
        elif tipo_livro == 4:
            banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (identificador))
            banco.alterar_no_banco('revista', 'emprestado = %d' %(0), "codigo = %s" % (identificador))
        
        if tipo_cliente == "Aluno":
            self.resultado = banco.consultar_no_banco("aluno", "matricula = %s" % (id_cliente))
            self.resultado2 = self.resultado[0]
            self.novo_max_emprestimo = self.resultado2[15] + 1
            banco.alterar_no_banco("aluno", "max_emprestimo = %d" % (self.novo_max_emprestimo), "matricula = %s" % (id_cliente))
        else:
            self.resultado = banco.consultar_no_banco("funcionario", "cpf = %s" % (id_cliente))
            self.resultado2 = self.resultado[0]
            self.novo_max_emprestimo = self.resultado[15] + 1   
            banco.alterar_no_banco("funcionario", "max_emprestimo = %d" % (self.novo_max_emprestimo), "matricula = %s" % (id_cliente)) 
        
        tkMessageBox.showinfo('Mensagem do Sistema', 'Entrega efetuado com sucesso.')
    
    def entrega_completa(self, tipo, id_cliente, lista_livros):
        for livro in lista_livros:
            if livro[9] == 1:
                banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (livro[8]))
                banco.alterar_no_banco('livro_didatico', 'emprestado = %d' %(0), "codigo = %s" % (livro[8]))
            elif livro[9] == 2:
                banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (livro[8]))
                banco.alterar_no_banco('livro_paradidatico', 'emprestado = %d' %(0), "codigo = %s" % (livro[8]))
            elif livro[9] == 3:
                banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (livro[8]))
                banco.alterar_no_banco('artigo', 'emprestado = %d' %(0), "codigo = %s" % (livro[8]))
            elif livro[9] == 4:
                banco.alterar_no_banco('emprestimo', 'status = %d' %(0), "id_publicacao = %s" % (livro[8]))
                banco.alterar_no_banco('revista', 'emprestado = %d' %(0), "codigo = %s" % (livro[8]))
            
        if tipo == "Aluno":
            self.resultado = banco.consultar_no_banco("aluno", "matricula = %s" % (id_cliente))
            self.resultado2 = self.resultado[0]
            self.novo_max_emprestimo = self.resultado2[15] + len(lista_livros)
            banco.alterar_no_banco("aluno", "max_emprestimo = %d" % (self.novo_max_emprestimo), "matricula = %s" % (id_cliente))
        else:
            self.resultado = banco.consultar_no_banco("funcionario", "cpf = %s" % (id_cliente))
            self.resultado2 = self.resultado[0]
            self.novo_max_emprestimo = self.resultado[15] + len(lista_livros)
            banco.alterar_no_banco("funcionario", "max_emprestimo = %d" % (self.novo_max_emprestimo), "matricula = %s" % (id_cliente)) 
        
        tkMessageBox.showinfo('Mensagem do Sistema', 'Entrega efetuado com sucesso.')
        
    def renovar(self, identificador):
        
        self.resultado = banco.consultar_no_banco("emprestimo", "id_livro REGEXP '%s'" % (identificador))
        print self.resultado
        
biblioteca = Biblioteca()
            